package com.eportal.dao;

import com.eportal.domain.Sysopt;
import com.eportal.entity.TLocksEntity;
import com.eportal.params.background.TLocks.TLocksSendParam;
import com.eportal.vo.controller.background.tlocks.InstallTlockDetailVO;
import com.eportal.vo.controller.background.tlocks.TlockListSendVO;
import com.eportal.vo.controller.background.tlocks.TlockListVO;
import com.eportal.vo.controller.background.tlocks.TlockRecoveryListVO;
import com.framework.jqgrid.MyMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TLocksEntityMapper extends MyMapper<TLocksEntity> {

    /**
     * 发货列表  包含现在拥有的 以及从fromAgentCode发出去的
     * @author Saber
     * @Date 2017/7/27 下午7:07
     * @param param             页面参数
     * @param isMunicipalities  是否直辖市 当parma中的areaCode为空时 此值将不使用
     * @param user              当前用户
     * @param userRole          当前用户userRole
     * @return
     */
    List<TlockListSendVO> queryForList(@Param("param")TLocksSendParam param,@Param("isMunicipalities") boolean isMunicipalities,@Param("user")Sysopt user,@Param("userRole")int userRole);

    /**
     * 智能门禁回收列表
     * @author Saber
     * @Date 2017/8/1 上午11:01
     * @param pId1          pId开始
     * @param pId2          pId截止
     * @param type          类型：0：一般合作方硬件，1：锁厂硬件
     * @param userRole      当前用户userRole
     * @param agtCode       当前用户所属合作方id 可为空
     * @return
     */
    List<TlockRecoveryListVO> recoveryList(@Param("pId1")String pId1, @Param("pId2")String pId2, @Param("type")String type, @Param("userRole")int userRole,@Param("agtCode") String agtCode);

    /**
     * 智能门禁发货列表
     * @author Saber
     * @Date 2017/8/1 下午12:52
     * @param pId1
     * @param pId2
     * @param userRole
     * @param agtCode
     * @return
     */
    List<TLocksEntity> notSendList(@Param("pId1")String pId1, @Param("pId2")String pId2, @Param("userRole")int userRole, @Param("agtCode")String agtCode);

    /**
     * 根据 pId 获取 tlocks 对象
     * @author Saber
     * @Date 2017/8/1 下午2:50
     * @param pId   pId
     * @return
     */
    TLocksEntity getByPid(@Param("pId")String pId);

    /**
     * 智能门禁安装列表（未安装的列表)
     * @author Saber
     * @Date 2017/8/1 下午4:46）
     * @param communityId  社区id
     * @return
     */
    List<TLocksEntity> installTlocksList(@Param("communityId")String communityId);

    /**
     * 门禁列表
     * @author Saber
     * @Date 2017/8/10 下午2:49
     * @param type          钥匙类型 private :私有钥匙  share:共有钥匙
     * @param communityId   小区id
     * @param user          当前用户
     * @param userRole      当前用户userRole
     * @return
     */
    List<TlockListVO> tlockList(@Param("type") String type, @Param("communityId") String communityId, @Param("user") Sysopt user, @Param("userRole") int userRole);

    /**
     * 获取安装点详情
     * @author Saber
     * @Date 2017/8/11 上午10:08
     * @param sId   sId
     * @return
     */
    InstallTlockDetailVO getInstallTlockDetail(@Param("sId") Long sId);

    /**
     * 根据小区id获取公共门禁主键
     * @author Saber
     * @Date 2017/8/11 下午5:46
     * @param communityId 小区id
     * @returnu
     */
    String getPubsIdByCommunity(@Param("communityId") String communityId);

    /**
     * 根据小区id获取私有门禁主键
     * @author Saber
     * @Date 2017/8/11 下午5:46
     * @param communityId 小区id
     * @returnu
     */
    String getPrvsIdByCommunity(@Param("communityId") String communityId);

    /**
     * 根据主键批量查询
     * @author Saber
     * @Date 2017/8/11 下午5:58
     * @param sIds 主键集合
     * @return
     */
    List<TLocksEntity> getListBySids(@Param("sIds") List<Long> sIds);

    /**
     * 获取给定返回内的所有pId  结果使用 , 分割
     * @author Saber
     * @Date 2017/8/16 下午1:58
     * @param agtCode       合作方
     * @param communityId   小区id
     * @param pIdBegin      pId初始值
     * @param pIdEnd        pId结束值
     * @return
     */
    String getPidsByPidBeginAndPidEnd(@Param("agtCode") String agtCode, @Param("communityId") String communityId, @Param("pIdBegin") String pIdBegin, @Param("pIdEnd") String pIdEnd);

    /**
     * 导出激活码（获取要导出的数据）
     * @author Saber
     * @Date 2017/8/21 下午4:40
     * @param pIdBegin  pId初始值
     * @param pIdEnd    pId结束值
     * @param user      当前用户
     * @param userRole  当前用户userRole
     * @return
     */
    List<TLocksEntity> getByPidAndAgtCodeForExport(@Param("pIdBegin") String pIdBegin, @Param("pIdEnd") String pIdEnd, @Param("user") Sysopt user, @Param("userRole") int userRole);
}
